import {
  BMSH_STATE,
  FGLDSH_STATE,
  JHXD_STATE,
  JZLZ_STATE,
  KCBSH_STATE,
  XQBZ_STATE,
  XQZF_STATE,
  ZRBGH_STATE,
  isShowPass,
  isShowUploadBtn,
  purchaseNeedCategory,
  renderNeedURL,
} from '../common/Format';
import { getPosIDs, getUserID, removeDateHmsStr, tooltipLength } from '@/utils';
import pageStyles from '@/common/pageLayout.less';
import { Button, Switch, Tooltip, message } from 'antd';
import { BZZ_CHECKSTATE, ColumnsRenderFun, DictionaryRenderFun, SHZ_CHECKSTATE, formatDecimal, getColorTextDoms } from '../../Acommon';
import { NeedManageAPI } from '../common/type';
import { useMemo } from 'react';
import MyIcon from '@/components/MyIcon';
import { CloseOutlined, CheckOutlined } from '@ant-design/icons';
import Cls from 'classnames';

// 做过滤的字段
const centralizedFields = ['needProofFlag', 'needProofURL', 'needImportFlag', 'needImportURL', 'needSingleFlag', 'needSingleURL'];

// Table表格的配置
const getOATableColumns = (needForm, needDetailInfo: Record<string, any>, nodesFlowListMemo: any, onEditTable, operateFuns) => {
  let { state, checkState } = needDetailInfo;
  // 是否展示上传附件字段 true = 展示 || false = 不展示
  const isShowUpload = state && (state == JZLZ_STATE() || state == ZRBGH_STATE() || state == JHXD_STATE() || state == XQZF_STATE() || state == KCBSH_STATE());

  // 是否展示操作按钮 true = 展示 || false = 不展示
  const isShowOperation = state == ZRBGH_STATE() && nodesFlowListMemo;

  // 再集中论证的时候是否可以切换switch和上传文件 true==可以操作  false==不可以操作
  const isOpenUpLoad = state && state == JZLZ_STATE() && checkState == BZZ_CHECKSTATE() && nodesFlowListMemo;

  const tableColumn = [
    {
      title: '序号',
      dataIndex: 'index',
      key: 'index',
      width: 60,
      align: 'center',
      fixed: 'left',
      render: (_: string, __: Record<string, any>, index: string) => index + 1,
    },
    // {
    //   title: '标的类别',
    //   dataIndex: 'supplyTypeName',
    //   key: 'supplyTypeName',
    //   visible: true,
    //   fixed: 'left',
    //   width: 135,
    //   render: (text: string | null) => DictionaryRenderFun({ text }),
    // },
    {
      title: '标的名称',
      dataIndex: 'fullName',
      key: 'fullName',
      fixed: 'left',
      width: 165,
      render: (text: string | null) => ColumnsRenderFun({ text }),
    },
    {
      title: '规格要求（参数）',
      dataIndex: 'needParams',
      key: 'needParams',
      visible: true,
      width: 180,
      render: (text: string | null) => ColumnsRenderFun({ text }),
    },

    {
      title: '预估单价（元）',
      dataIndex: 'expectPrice',
      key: 'expectPrice',
      visible: true,
      width: 170,
      render: (text: string | null) => <span>{formatDecimal(text)}</span>,
    },
    {
      title: '需求数量（单位）',
      dataIndex: 'expectNum',
      key: 'expectNum',
      visible: true,
      width: 190,
      render: (text: string | null, record: Record<string, any>) => {
        return (
          <div style={{ display: 'flex' }} className={pageStyles['over-flow-hidden']}>
            <div style={{ marginRight: '8px' }}>{text || '--'}</div>
            {getColorTextDoms(record?.unitBusinessName)}
          </div>
        );
      },
    },
    {
      title: '预估总价（元）',
      dataIndex: 'expectSum',
      key: 'expectSum',
      visible: true,
      width: 200,
      render: (text: string | null) => <span>{formatDecimal(text)}</span>,
    },
    {
      title: '项目编号',
      dataIndex: 'projectCode',
      key: 'projectCode',
      width: 200,
      render: (text, record) => ColumnsRenderFun({ text }),
    },
    {
      title: '项目名称',
      dataIndex: 'projectName',
      key: 'projectName',
      width: 200,
      render: (text, record) => ColumnsRenderFun({ text }),
    },
    {
      title: '项目金额（元）',
      dataIndex: 'projectSum',
      key: 'projectSum',
      width: 200,
      render: (text, record) => {
        return <div className={pageStyles['over-flow-hidden']}>{formatDecimal(text) || '--'}</div>;
      },
    },
    {
      title: '标包号',
      dataIndex: 'packCode',
      key: 'packCode',
      width: 200,
      render: (text, record) => ColumnsRenderFun({ text }),
    },
    {
      title: '是否平台',
      dataIndex: 'isPlatform',
      key: 'isPlatform',
      visible: true,
      width: 120,
      render: (text: number) => isShowPass(text),
    },
    {
      title: '是否进口',
      dataIndex: 'importFlag',
      key: 'importFlag',
      visible: true,
      width: 120,
      render: (text: number) => isShowPass(text),
    },
    {
      title: '是否单一来源',
      dataIndex: 'singleFlag',
      key: 'singleFlag',
      visible: true,
      width: 170,
      render: (text: number) => isShowPass(text),
    },
    {
      title: '计划采购时间',
      dataIndex: 'expectTime',
      key: 'expectTime',
      visible: true,
      width: 180,
      render: (text: string) => <span>{removeDateHmsStr(text)}</span>,
    },
    // {
    //   title: '技术规范',
    //   dataIndex: 'skillNormURL',
    //   key: 'skillNormURL',
    //   width: 220,
    //   render: (text) => renderNeedURL(text),
    // },
    // {
    //   title: '调研报告',
    //   dataIndex: 'researchReportURL',
    //   key: 'researchReportURL',
    //   width: 220,
    //   render: (text) => renderNeedURL(text),
    // },
    // {
    //   title: (
    //     <>
    //       {state == JZLZ_STATE() ? <MyIcon type="icon-edit1" style={{ marginRight: '.5rem' }} /> : null}
    //       是否通过需求论证
    //     </>
    //   ),
    //   dataIndex: 'needProofFlag',
    //   key: 'needProofFlag',
    //   width: 200,
    //   render: (text: string | number, record: Record<string, any>) => {
    //     if (isOpenUpLoad) {
    //       return (
    //         <Switch
    //           onChange={(checked: boolean) => {
    //             if (Number(record?.expectSum) < 500000) {
    //               onEditTable({ value: checked, key: 'needProofFlag', type: 'switch', record });
    //             } else {
    //               message?.warn('单项金额超过50万元需要填写需求论证意见！');
    //             }
    //           }}
    //           checkedChildren="是"
    //           unCheckedChildren="否"
    //           checked={text == 1 ? true : text == 0 ? false : false}
    //         />
    //       );
    //     } else {
    //       if (!(Number(record?.expectSum) < 500000)) {
    //         return isShowPass(record?.needProofFlag);
    //       } else {
    //         return '/';
    //       }
    //     }
    //   },
    // },
    // {
    //   title: (
    //     <>
    //       {state == JZLZ_STATE() ? <MyIcon type="icon-edit1" style={{ marginRight: '.5rem' }} /> : null}
    //       需求论证意见
    //     </>
    //   ),
    //   dataIndex: 'needProofURL',
    //   key: 'needProofURL',
    //   width: 220,
    //   render: (text: string, record: Record<string, any>) => {
    //     return isShowUploadBtn({
    //       record,
    //       needInfo: needDetailInfo,
    //       form: needForm,
    //       onEditTable,
    //       fileName: 'needProofURL',
    //       judgeName: 'needProofFlag',
    //       nodesFlowListMemo,
    //     });
    //   },
    // },
    // {
    //   title: (
    //     <>
    //       {state == JZLZ_STATE() ? <MyIcon type="icon-edit1" style={{ marginRight: '.5rem' }} /> : null}
    //       是否通过进口专业人员论证
    //     </>
    //   ),
    //   dataIndex: 'needImportFlag',
    //   key: 'needImportFlag',
    //   width: 240,
    //   render: (text: number | string, record: Record<string, any>) => {
    //     if (isOpenUpLoad) {
    //       if (record?.importFlag == 1) {
    //         return (
    //           <Switch
    //             onChange={(checked: boolean) => onEditTable({ value: checked, key: 'needImportFlag', type: 'switch', record })}
    //             checkedChildren="是"
    //             unCheckedChildren="否"
    //             checked={text == 1 ? true : text == 0 ? false : false}
    //           />
    //         );
    //       } else {
    //         return '/';
    //       }
    //     } else {
    //       if (record?.importFlag == 1) {
    //         return isShowPass(record?.needImportFlag);
    //       } else {
    //         return '/';
    //       }
    //     }
    //   },
    // },
    // {
    //   title: '进口专业人员论证意见',
    //   dataIndex: 'needImportURL',
    //   key: 'needImportURL',
    //   visible: true,
    //   width: 220,
    //   render: (text: string, record: Record<string, any>) => {
    //     return isShowUploadBtn({
    //       record,
    //       needInfo: needDetailInfo,
    //       form: needForm,
    //       onEditTable,
    //       fileName: 'needImportURL',
    //       judgeName: 'needImportFlag',
    //       nodesFlowListMemo,
    //     });
    //   },
    // },
    // {
    //   title: (
    //     <>
    //       {state == JZLZ_STATE() ? <MyIcon type="icon-edit1" style={{ marginRight: '.5rem' }} /> : null}
    //       是否通过单一来源论证
    //     </>
    //   ),
    //   dataIndex: 'needSingleFlag',
    //   key: 'needSingleFlag',
    //   width: 230,
    //   render: (text: number | string, record: Record<string, any>) => {
    //     if (isOpenUpLoad) {
    //       if (record?.singleFlag == 1) {
    //         return (
    //           <Switch
    //             onChange={(checked: boolean) => onEditTable({ value: checked, key: 'needSingleFlag', type: 'switch', record })}
    //             checkedChildren="是"
    //             unCheckedChildren="否"
    //             checked={text == 1 ? true : text == 0 ? false : false}
    //           />
    //         );
    //       } else {
    //         return '/';
    //       }
    //     } else {
    //       if (record?.singleFlag == 1) {
    //         return isShowPass(record?.needSingleFlag);
    //       } else {
    //         return '/';
    //       }
    //     }
    //   },
    // },
    // {
    //   title: '单一来源论证意见',
    //   dataIndex: 'needSingleURL',
    //   key: 'needSingleURL',
    //   visible: true,
    //   width: 220,
    //   render: (text: string, record: Record<string, any>) => {
    //     return isShowUploadBtn({
    //       record,
    //       needInfo: needDetailInfo,
    //       form: needForm,
    //       onEditTable,
    //       fileName: 'needSingleURL',
    //       judgeName: 'needSingleFlag',
    //       nodesFlowListMemo,
    //     });
    //   },
    // },
    {
      title: '操作',
      dataIndex: 'operation',
      key: 'operation',
      width: 160,
      visible: true,
      fixed: 'right',
      // align: 'center',
      render: (text: undefined, record: Record<string, any>) => {
        return (
          // <div
          //   style={{
          //     display: 'flex',
          //     justifyContent: 'center',
          //   }}
          // >
          //   <>
          //     <Tooltip title={'通过'}>
          //       <Button
          //         icon={<CheckOutlined />}
          //         type={'link'}
          //         size={'small'}
          //         className="manageBtntTxtStyle"
          //         onClick={(e) => {
          //           operateFuns?.onAudit(record, 'true');
          //           e?.stopPropagation();
          //         }}
          //       >
          //         通过
          //       </Button>
          //     </Tooltip>
          //     <Tooltip title={'不通过'}>
          //       <Button
          //         icon={<CloseOutlined />}
          //         type={'link'}
          //         size={'small'}
          //         danger
          //         className={Cls('manageBtntTxtStyle', 'manageColorRedBtn')}
          //         onClick={(e) => {
          //           operateFuns?.onAudit(record, 'false');
          //           e?.stopPropagation();
          //         }}
          //       >
          //         不通过
          //       </Button>
          //     </Tooltip>
          //   </>
          // </div>
          <div style={{}}>
            {/* 是否通过主任办公室审议 */}
            <Switch
              checkedChildren="是"
              unCheckedChildren="否"
              defaultChecked
              checked={Number(record?.checkState) == 1 ? true : false}
              onChange={(value, e) => {
                if (Number(record?.expectSum) >= 1000000) {
                  e?.stopPropagation();
                  operateFuns?.onAudit(record, value + '');
                } else {
                  message?.warn('单项金额未超过100万元则强制同意，不可更改！');
                }
              }}
            />
          </div>
        );
      },
    },
  ].filter((item) => {
    if (isShowUpload) {
      // =================展示上传附件列###
      if (isShowOperation) {
        // =================展示操作列###
        /**
         * 都展示
         * */
        return item;
      } else {
        // =================不展示操作列###
        /**
         * 过滤操作列 展示上传列
         * */
        return item.dataIndex != 'operation';
      }
    } else {
      // =================不展示上传附件列###
      if (isShowOperation) {
        // =================展示操作列###
        /**
         * 过滤上传列 展示操作列
         * */
        return !centralizedFields.includes(item.dataIndex);
      } else {
        // =================不展示操作列###
        /**
         * 都不展示
         * */
        return !centralizedFields.includes(item.dataIndex) && item.dataIndex != 'operation';
      }
    }
  });

  // if (state == ZRBGH_STATE() && checkState == BZZ_CHECKSTATE()) {
  //   return tableColumn;
  // }
  // if (state == ZRBGH_STATE() || state == KCBSH_STATE() || state == JHXD_STATE()) {
  //   tableColumn?.splice(7, 0, {
  //     title: '审核状态',
  //     dataIndex: 'checkState',
  //     key: 'checkState',
  //     width: 120,
  //     visible: true,
  //     render: (text: number) => {
  //       return (
  //         <Tooltip>
  //           <span className={pageStyles['over-flow-hidden']}>
  //             {!text ? (
  //               <span className={pageStyles['over-flow-hidden']} style={{ color: '#1677ff' }}>
  //                 待审核
  //               </span>
  //             ) : text == 1 ? (
  //               <span className={pageStyles['over-flow-hidden']} style={{ color: '#1e9392' }}>
  //                 同意
  //               </span>
  //             ) : text == 2 ? (
  //               <span className={pageStyles['over-flow-hidden']} style={{ color: 'red' }}>
  //                 不同意
  //               </span>
  //             ) : (
  //               '--'
  //             )}
  //           </span>
  //         </Tooltip>
  //       );
  //     },
  //   });
  // }
  return tableColumn?.filter((item) => item?.dataIndex != 'operation' && item?.dataIndex != 'checkState');
};

export { getOATableColumns };
